From f537723753fc443db7b1f908e4ea20103c76565a Mon Sep 17 00:00:00 2001 From: Robert Brady Date: Wed, 25 Oct 2000 19:14:19 +0000 Subject: [PATCH] Allow creation of new files when saving. 2000-10-25 Robert Brady * gtk/testtext.c (save_buffer): Allow creation of new files when saving. (fill_file_buffer): Don't die if a UTF-8 sequence is split across calls to read(). --- gtk/testtext.c | 9 ++++++--- tests/testtext.c | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/gtk/testtext.c b/gtk/testtext.c index dcc363b6fe..f2237d2ae4 100644 --- a/gtk/testtext.c +++ b/gtk/testtext.c @@ -620,7 +620,7 @@ fill_file_buffer (GtkTextBuffer *buffer, const char *filename) gint count; char *leftover, *next; int to_read = 2047 - remaining; - + count = fread (buf + remaining, 1, to_read, f); buf[count + remaining] = '\0'; @@ -632,6 +632,10 @@ fill_file_buffer (GtkTextBuffer *buffer, const char *filename) break; next = g_utf8_next_char (next); + if (next > buf+count+remaining) { + next = NULL; + break; + } } gtk_text_buffer_insert (buffer, &iter, buf, leftover - buf); @@ -1090,9 +1094,8 @@ save_buffer (Buffer *buffer) buffer->filename, bak_filename, g_strerror (errno)); msgbox_run (NULL, err, "OK", NULL, NULL, 0); g_free (err); + return FALSE; } - - return FALSE; } else have_backup = TRUE; diff --git a/tests/testtext.c b/tests/testtext.c index dcc363b6fe..f2237d2ae4 100644 --- a/tests/testtext.c +++ b/tests/testtext.c @@ -620,7 +620,7 @@ fill_file_buffer (GtkTextBuffer *buffer, const char *filename) gint count; char *leftover, *next; int to_read = 2047 - remaining; - + count = fread (buf + remaining, 1, to_read, f); buf[count + remaining] = '\0'; @@ -632,6 +632,10 @@ fill_file_buffer (GtkTextBuffer *buffer, const char *filename) break; next = g_utf8_next_char (next); + if (next > buf+count+remaining) { + next = NULL; + break; + } } gtk_text_buffer_insert (buffer, &iter, buf, leftover - buf); @@ -1090,9 +1094,8 @@ save_buffer (Buffer *buffer) buffer->filename, bak_filename, g_strerror (errno)); msgbox_run (NULL, err, "OK", NULL, NULL, 0); g_free (err); + return FALSE; } - - return FALSE; } else have_backup = TRUE; -- 2.30.2